# -*- coding: utf-8 -*-
'''
@author: Ricardo Faria 6315 e Luís Freitas 5602
@date: 3 Dezembro de 2012
Esta classe contem os métodos que efectuam o gráfico
e métodos para trabalhar com as listas
'''
#set up matplotlib and the figure
import csv
import numpy as np
import matplotlib.mlab as mlab
import matplotlib.pyplot as plt
#plt.figure

'''
Método que converte os dados de string para inteiro
'''
def convert(lista):
    lista_converter = []
    for x in lista:
        lista_converter.append(int(float(x)))
    return lista_converter
'''
método que obtem uma lista a partir de um ficheiro especifico
@param tipo nome do ficheiro a abrir
@param nome do curso ou unidade organica
'''
def getLista(tipo, nome):
    reader = csv.reader(open(tipo , "r"))
    
    for lista_linha in reader:
        if lista_linha.__contains__(nome):
            lista = lista_linha
    del lista[0]
    while len(lista) < 16:
        lista.append('0.0')
    
    lista = convert(lista)
    return lista

'''
Método que recebe o nome do ficheiro para criar a lista e qual o
curso/unidade org a afectuar o gráfico
@param tipo nome do ficheiro a abrir
@param nome do curso ou unidade organica
'''
def criarGrafico(tipo, nome):
    ArrayY  = getLista(tipo, nome)

    tamanho_da_classe = 1     
    localizacao_das_labels=0.5  

    plt.bar(np.arange(16),ArrayY,tamanho_da_classe)
    plt.xticks(np.arange(16)+localizacao_das_labels,('95/96','96/97','97/98','98/99', '99/00', '00/01', '01/02', '02/03', '03/04','04/05', '05/06', '06/07', '07/08', '08/09', '09/10', '10/11'))
    
    plt.xlim(np.arange(16).min(),np.arange(16).max()+tamanho_da_classe)
    
    
    plt.show()
